<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html><head>
<meta content="uft-8" name="charset">

<title>Application Boundary</title>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<meta content="summary" name="twitter:card">

<meta content="16665197" name="twitter:site:id">

<meta content="@martinfowler" name="twitter:site">

<meta content="bliki: Application Boundary" property="og:title">

<meta content="https://martinfowler.com/bliki/ApplicationBoundary.html" property="og:url">

<meta content="a bliki entry for Application Boundary" property="og:description">

<meta content="https://martinfowler.com/logo-sq.png" property="og:image">

<meta content="martinfowler.com" property="og:site_name">

<meta content="article" property="og:type">

<meta content="2003-09-11 00:00:00 -0400" property="og:article:modified_time">

<meta content="width=device-width, initial-scale=1" name="viewport">

<link href="../entry.css" rel="stylesheet" type="text/css">
<meta http-equiv="origin-trial" content="AymqwRC7u88Y4JPvfIF2F37QKylC04248hLCdJAsh8xgOfe/dVJPV3XS3wLFca1ZMVOtnBfVjaCMTVudWM//5g4AAAB7eyJvcmlnaW4iOiJodHRwczovL3d3dy5nb29nbGV0YWdtYW5hZ2VyLmNvbTo0NDMiLCJmZWF0dXJlIjoiUHJpdmFjeVNhbmRib3hBZHNBUElzIiwiZXhwaXJ5IjoxNjk1MTY3OTk5LCJpc1RoaXJkUGFydHkiOnRydWV9"><style type="text/css">@font-face { font-family: TencentSans; src: url("moz-extension://7ebec3f3-df69-44bd-9f24-2f7e0d7027ee/static/fonts/TencentSans.woff2"); }</style></head>

<body><header id="banner" style="background-image: url(&quot;/img/zakim.png&quot;); background-repeat: no-repeat">

<div class="name-logo"><a href="https://martinfowler.com/"><img src="../mf-name-white.png"></a></div>
  <div class="search">
    <!-- SiteSearch Google -->
    <form method="GET" action="https://www.google.com/search">
      <input type="hidden" name="ie" value="UTF-8">
      <input type="hidden" name="oe" value="UTF-8">
      <input class="field" type="text" name="q" size="15" maxlength="255">
      <button class="button" type="submit" name="btnG" value=" " title="Search">
      <input type="hidden" name="domains" value="martinfowler.com">
      <input type="hidden" name="sitesearch" value=""> 
      <input type="hidden" name="sitesearch" value="martinfowler.com">
    
  </button></form></div>

<div class="menu-button navmenu-button"><a class="icon icon-bars" href="#navmenu-bottom"></a></div>

<nav class="top-menu">
<ul>
<li><a class="" href="https://refactoring.com/">Refactoring</a></li>

<li><a class="" href="https://martinfowler.com/agile.html">Agile</a></li>

<li><a class="" href="https://martinfowler.com/architecture">Architecture</a></li>

<li><a class="" href="https://martinfowler.com/aboutMe.html">About</a></li>

<li><a class="tw" href="https://www.thoughtworks.com/">Thoughtworks</a></li>

<li><a class="icon icon-rss" href="https://martinfowler.com/feed.atom" title="feed"></a></li>

<li><a class="icon icon-twitter" href="https://www.twitter.com/martinfowler" title="Twitter stream"></a></li>

<li class="icon"><a href="https://toot.thoughtworks.com/@mfowler" title="Mastodon stream"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"></path></svg></a></li>
</ul>
</nav>
</header>
<nav id="top-navmenu">
<nav class="navmenu">
<div class="nav-head">  <div class="search">
    <!-- SiteSearch Google -->
    <form method="GET" action="https://www.google.com/search">
      <input type="hidden" name="ie" value="UTF-8">
      <input type="hidden" name="oe" value="UTF-8">
      <input class="field" type="text" name="q" size="15" maxlength="255">
      <button class="button" type="submit" name="btnG" value=" " title="Search">
      <input type="hidden" name="domains" value="martinfowler.com">
      <input type="hidden" name="sitesearch" value=""> 
      <input type="hidden" name="sitesearch" value="martinfowler.com">
    
  </button></form></div>

<div class="closediv">
<span class="close" title="close"></span>
</div>
</div>

<div class="nav-body">
<div class="topics">
<h2>Topics</h2>

<p><a href="https://martinfowler.com/architecture">Architecture</a></p>

<p><a href="https://refactoring.com/">Refactoring</a></p>

<p><a href="https://martinfowler.com/agile.html">Agile</a></p>

<p><a href="https://martinfowler.com/delivery.html">Delivery</a></p>

<p><a href="https://martinfowler.com/microservices">Microservices</a></p>

<p><a href="https://martinfowler.com/data">Data</a></p>

<p><a href="https://martinfowler.com/testing">Testing</a></p>

<p><a href="https://martinfowler.com/dsl.html">DSL</a></p>
</div>

<div class="about">
<h2>about me</h2>

<p><a href="https://martinfowler.com/aboutMe.html">About</a></p>

<p><a href="https://martinfowler.com/books">Books</a></p>

<p><a href="https://martinfowler.com/faq.html">FAQ</a></p>
</div>

<div class="content">
<h2>content</h2>

<p><a href="https://martinfowler.com/videos.html">Videos</a></p>

<p><a href="https://martinfowler.com/tags">Content Index</a></p>

<p><a href="https://martinfowler.com/articles/eurogames">Board Games</a></p>

<p><a href="https://martinfowler.com/photos">Photography</a></p>
</div>

<div class="tw">
<h2>Thoughtworks</h2>

<p><a href="https://thoughtworks.com/insights">Insights</a></p>

<p><a href="https://thoughtworks.com/careers">Careers</a></p>

<p><a href="https://thoughtworks.com/products">Products</a></p>
</div>

<div class="feeds">
<h2>follow</h2>

<p><a href="https://www.twitter.com/martinfowler">Twitter</a></p>

<p><a href="https://martinfowler.com/feed.atom">RSS</a></p>

<p><a href="https://toot.thoughtworks.com/@mfowler">Mastodon</a></p>
</div>
</div>
</nav>
</nav>

<main>
<article>
<h1><a href="https://martinfowler.com/bliki/ApplicationBoundary.html">Application Boundary</a></h1>

<p class="date">11 September 2003</p>

<div class="frontMatter">
<div class="author">
<p class="author-photo"><a href="https://martinfowler.com/"><img src="../mf.jpg" title="Photo of Martin Fowler"></a></p>

<p class="name"><a href="https://martinfowler.com/" rel="author">Martin Fowler</a></p>
</div>

<div class="spacer"></div>

<div class="tags">
<p class="tag-link"><a href="https://martinfowler.com/tags/team%20organization.html">team organization</a></p>

<p class="tag-link"><a href="https://martinfowler.com/tags/enterprise%20architecture.html">enterprise architecture</a></p>

<p class="tag-link"><a href="https://martinfowler.com/tags/application%20architecture.html">application architecture</a></p>
</div>
</div>

<div class="clear"></div>

<div class="paperBody">
<p>One of the undecided problems of software development is deciding
what the boundaries of a piece of software is. (Is a browser part of
an operating system or not?) Many proponents of Service Oriented
Architecture believe that applications are going away - thus future
enterprise software development will be about assembling services
together.</p>

<p>软件开发中尚未解决的问题之一是决定一个软件项目的范围。
    （浏览器是否是操作系统的一部分？）
    许多面向服务的架构（Service Oriented Architecture）的拥护者认为应用程序正在消亡
    ——因此未来的企业软件开发将关注于将服务组装在一起。
</p>

<p>I don't think applications are going away for the same reasons
why application boundaries are so hard to draw. Essentially
  <b>applications are social constructions</b>:</p>

<p>我不认为应用程序会消失，原因与应用程序范围难以划定的原因相同。
    本质上
  <b>应用程序是社会构造。</b>:</p>

<ul>
<li>A body of code that's seen by developers as a single unit</li>

<li>一组代码，开发者将其视为一个整体。</li>

<li>A group of functionality that business customers see as a single unit</li>

<li>一组功能，商业客户将其视为一个整体。</li>

<li>An initiative that those with the money see as a single budget</li>

<li>一个那些拥有资金的人视为一个预算的举措。</li>
</ul>

<p>All of these are social things. We can draw application
boundaries in hundred arbitrarily different ways. But it's our nature
to group things together and organize groups of people around these
groups. There's little science in how this works, and in many ways
these boundaries are drawn primarily by human inter-relationships and
politics rather than technical and functional considerations. To think
about this more clearly I think we have to recognize this
uncomfortable fact.</p>

<p>所有这些都是社会事物。
    我们可以以一百种任意不同的方式绘制应用程序的界限。
    但我们的本质是将事物组织在一起，并围绕这些群体组织人群。
    这种工作方式中很少有科学，
    在很多方面，这些界限主要是通过人际关系和政治而不是技术和功能考虑来划分的。
    为了更清楚地考虑这个问题，我认为我们必须认识到这个令人不舒服的事实。
</p>

<p>(If you are interesting in thinking further about applications
and how they interrelate, you should take a look at the strategic
design section of <a href="https://www.amazon.com/gp/product/0321125215/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321125215&amp;linkCode=as2&amp;tag=martinfowlerc-20">Domain-Driven
Design</a>)</p>

<p>（如果你对进一步思考应用程序及其相互关系感兴趣，
    你应该看看<a href="https://www.amazon.com/gp/product/0321125215/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321125215&amp;linkCode=as2&amp;tag=martinfowlerc-20"
    >领域驱动设计</a>中的战略设计部分）
</p>

</div>
</article>

<div class="clear"></div>
</main>

<nav id="bottom-navmenu" style="display: none;">
<nav class="navmenu">
<div class="nav-head">  <div class="search">
    <!-- SiteSearch Google -->
    <form method="GET" action="https://www.google.com/search">
      <input type="hidden" name="ie" value="UTF-8">
      <input type="hidden" name="oe" value="UTF-8">
      <input class="field" type="text" name="q" size="15" maxlength="255">
      <button class="button" type="submit" name="btnG" value=" " title="Search">
      <input type="hidden" name="domains" value="martinfowler.com">
      <input type="hidden" name="sitesearch" value=""> 
      <input type="hidden" name="sitesearch" value="martinfowler.com">
    
  </button></form></div>

<div class="closediv">
<span class="close" title="close"></span>
</div>
</div>

<div class="nav-body">
<div class="topics">
<h2>Topics</h2>

<p><a href="https://martinfowler.com/architecture">Architecture</a></p>

<p><a href="https://refactoring.com/">Refactoring</a></p>

<p><a href="https://martinfowler.com/agile.html">Agile</a></p>

<p><a href="https://martinfowler.com/delivery.html">Delivery</a></p>

<p><a href="https://martinfowler.com/microservices">Microservices</a></p>

<p><a href="https://martinfowler.com/data">Data</a></p>

<p><a href="https://martinfowler.com/testing">Testing</a></p>

<p><a href="https://martinfowler.com/dsl.html">DSL</a></p>
</div>

<div class="about">
<h2>about me</h2>

<p><a href="https://martinfowler.com/aboutMe.html">About</a></p>

<p><a href="https://martinfowler.com/books">Books</a></p>

<p><a href="https://martinfowler.com/faq.html">FAQ</a></p>
</div>

<div class="content">
<h2>content</h2>

<p><a href="https://martinfowler.com/videos.html">Videos</a></p>

<p><a href="https://martinfowler.com/tags">Content Index</a></p>

<p><a href="https://martinfowler.com/articles/eurogames">Board Games</a></p>

<p><a href="https://martinfowler.com/photos">Photography</a></p>
</div>

<div class="tw">
<h2>Thoughtworks</h2>

<p><a href="https://thoughtworks.com/insights">Insights</a></p>

<p><a href="https://thoughtworks.com/careers">Careers</a></p>

<p><a href="https://thoughtworks.com/products">Products</a></p>
</div>

<div class="feeds">
<h2>follow</h2>

<p><a href="https://www.twitter.com/martinfowler">Twitter</a></p>

<p><a href="https://martinfowler.com/feed.atom">RSS</a></p>

<p><a href="https://toot.thoughtworks.com/@mfowler">Mastodon</a></p>
</div>
</div>
</nav>
</nav>
<footer id="page-footer">
<div class="tw-logo">
<a href="http://www.thoughtworks.com/">
<img src="../thoughtworks_white.png">
</a>
</div>
<div class="menu-button">
<div class="icon-bars navmenu-button"></div>
</div>
<div class="copyright">
<p>© Martin Fowler | <a href="http://www.thoughtworks.com/privacy-policy">Privacy Policy</a> | <a href="https://martinfowler.com/aboutMe.html#disclosures">Disclosures</a></p>
</div>
</footer>
<!-- Google Analytics -->
<!-- old Google Universal -->
<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-17005812-1', 'auto');
ga('send', 'pageview');
</script>
<script async="" src="../analytics.js"></script>
<!-- New Google GA4 -->
<!-- global site tag (gtag.js) - Google Analytics -->
<script async="" src="../js"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-6D51F4BDVF');
</script>
<!-- End Google Analytics -->



<script src="../jquery-1.11.3.min.js" type="text/javascript"></script>

<script src="../mfcom.js" type="text/javascript"></script>


</body><div id="transmart-crx-shadow-root" style="all: initial;"></div></html>